package me.haoliang

/**
  * author: planck 
  * createTime: 2016/11/1.
  */
case class CaseClassScala(a: Int, b: Int);

object CaseClassScala {
  def main(args: Array[String]): Unit = {
    //第一个特性 可以省略new
    val caseClassScala = CaseClassScala(1, 2)
    val caseClassScala2 = CaseClassScala(1, 2)
    val caseClassScala3 = new CaseClassScala(1, 2)
    val caseClassScala4 = new CaseClassScala(1, 2)
    //自动实现toString
    println(caseClassScala)
    //自动实现hashCode equals 参数相同。就会相等
    println(caseClassScala == caseClassScala2)
    println(caseClassScala.equals(caseClassScala2))
    println(caseClassScala.equals(caseClassScala3))
    println(caseClassScala3.equals(caseClassScala4))
    //默认实现序列化
    //省略 objectOutputStream

    //自动从scala.Product中继承一些函数 equal

    //支持模式匹配
    caseClassScala match {
      case CaseClassScala(a, b) =>
        println(a)
        println(b)
      case _: Any =>
        println("unknown type")
    }


  }
}
